package com.cb2.algorithm.leetcode;

/**
 * <a href='https://leetcode.cn/problems/xor-operation-in-an-array'>数组异或操作(XOR Operation in an Array)</a>
 * <p>给你两个整数，n 和 start 。</p>
 * <p>数组 nums 定义为：nums[i] = start + 2*i（下标从 0 开始）且 n == nums.length 。</p>
 * <p>请返回 nums 中所有元素按位异或（XOR）后得到的结果。</p>
 *
 * <p>
 * <b>示例：</b>
 * <pre>
 *  示例 1：
 *      输入：n = 5, start = 0
 *      输出：8
 *      解释：数组 nums 为 [0, 2, 4, 6, 8]，其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。
 *          "^" 为按位异或 XOR 运算符。
 *
 *  示例 2：
 *      输入：n = 4, start = 3
 *      输出：8
 *      解释：数组 nums 为 [3, 5, 7, 9]，其中 (3 ^ 5 ^ 7 ^ 9) = 8.
 *
 *  示例 3：
 *      输入：n = 1, start = 7
 *      输出：7
 *
 *  示例 4：
 *      输入：n = 10, start = 5
 *      输出：2
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 * <ul>
 *     <li>1 <= n <= 1000</li>
 *     <li>0 <= start <= 1000</li>
 *     <li>n == nums.length</li>
 * </ul>
 * </p>
 *
 * @author c2b
 * @since 2025/4/28 10:00
 */
public class LC1486XOROperationInAnArray_S {
    static class Solution {
        public int xorOperation(int n, int start) {
            int res = 0;
            for (int i = 0; i < n; i++) {
                res ^= (start + 2 * i);
            }
            return res;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.xorOperation(5, 0));
        System.out.println(solution.xorOperation(4, 3));
        System.out.println(solution.xorOperation(1, 7));
        System.out.println(solution.xorOperation(10, 5));
    }
}
